    #include "boot.h"
    .global _start
    .extern boot_entry
    .code16
    .text
_start:
    // 将各个寄存器的值置零
	mov $0, %ax
    mov %ax, %ds
    mov %ax, %ss
    mov %ax, %es
    mov %ax, %fs
    mov %ax, %gs

    // 将0x7c00的地址作为栈的起始地址，栈地址由高向低增长
    mov $_start, %esp
    mov $0xe, %ah
	mov $'M', %al
	int $0x10
    
read_loader:
    mov $0x8000, %bx // 读取的内存地址
    mov $0x2, %cx // ch:磁道号，cl：起始扇区号
    mov $0x2, %ah // ah:0x2 读盘命令
    mov $64, %al // al:读取的扇区数量，此处读32KB
    mov $0x80, %dx // dh:0磁头号，dl:80驱动器号0x80
    int $0x13 // BIOS调用
    jc read_loader

    jmp boot_entry // 执行boot的C代码
    jmp .

    .section boot_end, "ax" // 引导结束位置

boot_sig:
    .byte 0x55, 0xaa

